﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Odbc;
using System.Collections;
using Premios = LI4SilverWCF.bus.Premios;

namespace LI4SilverWCF.data
{

    class DBPremios
    {
        OdbcConnection con;
        public DBPremios(OdbcConnection c)
        {
            con = c;
        }

        public Hashtable obterListaPremios()
        {
            Hashtable lista = new Hashtable();
            string query = "SELECT NOME_PREMIO, PONTOS_NEC FROM PREMIO";
            OdbcCommand command = new OdbcCommand(query, con);
            con.Open();
            OdbcDataReader reader = command.ExecuteReader();

            try
            {
                while (reader.Read())
                {
                    lista.Add(reader.GetString(0), reader.GetInt32(1));
                }

            }
            catch (Exception e)
            {
            }
            con.Close();
            return lista;
        }

        public void obterDadosPremio(String nome, Premios p)
        {
            string query = "SELECT COD_PREMIO, PONTOS_NEC "
                          + "FROM PREMIO "
                          + "WHERE NOME_PREMIO = '" + nome + "'";
            OdbcCommand command = new OdbcCommand(query, con);
            con.Open();
            OdbcDataReader reader = command.ExecuteReader();

            try
            {
                while (reader.Read())
                {
                    if (!reader.IsDBNull(0)) p.codigoPremio = (int)reader.GetInt32(0);
                    if (!reader.IsDBNull(1)) p.pontosNec = (int)reader.GetInt32(1);
                }

            }
            catch (Exception e)
            {
            }
            con.Close();
        }


        public void removerPremio(String nome)
        {
            string query = "DELETE FROM PREMIO WHERE NOME_PREMIO = '" + nome + "'";
            OdbcCommand command = new OdbcCommand(query, con);
            con.Open();
            int rows = 0;
            try
            {
                rows = command.ExecuteNonQuery();
                Console.WriteLine(rows);
            }
            catch (Exception e)
            {
                Console.WriteLine("ERRO AO REMOVER PREMIO: " + e);
            }
            con.Close();
        }

        public bool verificarUnicidadePremio(String nome)
        {
            string query = "SELECT COD_PREMIO FROM PREMIO WHERE NOME_PREMIO = '" + nome + "'";
            OdbcCommand command = new OdbcCommand(query, con);
            con.Open();
            OdbcDataReader reader = command.ExecuteReader();
            bool unico = false;

            try
            {
                if (!reader.HasRows) unico = true;
            }
            catch (Exception e)
            {
            }
            con.Close();
            return unico;
        }

        public void inserirDadosPremio(String nome, int pontos)
        {
            string query = "INSERT INTO PREMIO (NOME_PREMIO, PONTOS_NEC) VALUES ('" + nome + "'," + pontos + ")";
            OdbcCommand command = new OdbcCommand(query, con);
            con.Open();
            try
            {
                command.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                Console.WriteLine("ERRO AO INSERIR PREMIO: " + e);
            }
            con.Close();
        }

        public void guardaAlteracoesPremio(String nome, int pontos)
        {
            string query = "UPDATE PREMIO SET PONTOS_NEC= " + pontos + " WHERE NOME_PREMIO = '" + nome + "'";
            OdbcCommand command = new OdbcCommand(query, con);
            con.Open();
            try
            {
                command.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                Console.WriteLine("ERRO AO ALTERAR PREMIO: " + e);
            }
            con.Close();
        }

    }
}